
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>TCP是如何确保数据传输的可靠性的？ - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>TCP是如何确保数据传输的可靠性的？ - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">TCP的数据确认机制是如何工作的，以确保数据包成功到达？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">接收方在收到数据包后，会发送一个确认包（ACK），指明已经成功接收的数据字节的序号。如果发送方在设定的超时时间内没有收到这个确认包，它就会重传相应的数据包。</div>
          </div>
          <div class="card-source">来源: 1. 数据确认（Acknowledgment）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在什么情况下会触发TCP的重传机制？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">当发送方发送数据包后，启动一个重传计时器。如果计时器超时，但发送方仍未收到接收方对该数据包的确认包（ACK），就会触发重传机制，重新发送该数据包。</div>
          </div>
          <div class="card-source">来源: 2. 重传机制（Retransmission）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">原理</div>
          <div class="card-question">TCP如何利用序列号来保证数据按序交付给应用层？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">原理</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">每个TCP数据包都包含一个序列号。接收方使用这些序列号来将数据包按正确的顺序进行重组。即使数据包到达顺序不正确，接收方也会先将其缓存并根据序列号重新排序，再交付给应用层。</div>
          </div>
          <div class="card-source">来源: 3. 数据顺序保证（In-Order Delivery）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">TCP的流量控制机制的目标是什么？它通过什么核心工具来实现？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">流量控制的目标是调节发送方的发送速率，以避免超出接收方的处理能力。它通过接收方使用“接收窗口”（Window Size）来告知发送方其当前可用的缓冲区大小，发送方则根据这个窗口大小来调整发送的数据量。</div>
          </div>
          <div class="card-source">来源: 4. 流量控制（Flow Control）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">TCP拥塞控制的主要目的是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">拥塞控制的主要目的是防止网络发生拥塞。它通过动态调整发送速率来适应当前网络的拥塞状况，避免因同时在网络中传输过多数据而导致网络性能下降。</div>
          </div>
          <div class="card-source">来源: 5. 拥塞控制（Congestion Control）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">文档中提及了哪些TCP用于实现拥塞控制的算法？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">文档中提及的拥塞控制算法包括：慢启动（Slow Start）、拥塞避免（Congestion Avoidance）、快速重传（Fast Retransmit）和快速恢复（Fast Recovery）。</div>
          </div>
          <div class="card-source">来源: 5. 拥塞控制（Congestion Control）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">TCP中的校验和（Checksum）如何帮助验证数据的完整性？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">每个数据包都包含一个校验和字段。接收方收到数据包后，会对其内容进行校验和计算，并将结果与数据包中自带的校验和进行比较。如果两者不匹配，说明数据在传输中已损坏，接收方会丢弃该数据包。</div>
          </div>
          <div class="card-source">来源: 6. 校验和（Checksum）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">原理</div>
          <div class="card-question">TCP为何要对大数据块进行分段？接收方又是如何将这些分段重组成完整数据的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">原理</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">TCP将大数据块分段成适当大小的数据包以进行传输。在接收端，会根据每个数据包的序列号，将这些数据包按正确的顺序重新组装，从而恢复成完整的原始数据。</div>
          </div>
          <div class="card-source">来源: 7. 数据分段与重组（Segmentation and Reassembly）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">作为一种可靠的协议，TCP在不可靠的网络环境中主要保证了数据的哪些特性？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">TCP在不可靠的网络环境中，主要保证了数据的完整性（integrity）、顺序性（sequence）和准确性（accuracy）。</div>
          </div>
          <div class="card-source">来源: 引言段落 (id="u4fd22c6d")</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
